<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FabGL: fabgl::DisplayController Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">FabGL
   </div>
   <div id="projectbrief">ESP32 Display Controller and Graphics Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classfabgl_1_1_display_controller.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classfabgl_1_1_display_controller-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">fabgl::DisplayController Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Represents the base abstract class for display controllers.  
 <a href="classfabgl_1_1_display_controller.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="displaycontroller_8h_source.html">displaycontroller.h</a>&gt;</code></p>

<p>Inherited by fabgl::GenericDisplayController.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad05c52072f16c0778d2e83308fb58edd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#ad05c52072f16c0778d2e83308fb58edd">enableBackgroundPrimitiveExecution</a> (bool value)</td></tr>
<tr class="memdesc:ad05c52072f16c0778d2e83308fb58edd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables drawings inside vertical retracing time.  <a href="#ad05c52072f16c0778d2e83308fb58edd">More...</a><br /></td></tr>
<tr class="separator:ad05c52072f16c0778d2e83308fb58edd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bbc7368822596ba58e4512122a0a94f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a0bbc7368822596ba58e4512122a0a94f">enableBackgroundPrimitiveTimeout</a> (bool value)</td></tr>
<tr class="memdesc:a0bbc7368822596ba58e4512122a0a94f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables execution time limitation inside vertical retracing interrupt.  <a href="#a0bbc7368822596ba58e4512122a0a94f">More...</a><br /></td></tr>
<tr class="separator:a0bbc7368822596ba58e4512122a0a94f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81f19c6fc1273fd9e84c7483b7584be9"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a81f19c6fc1273fd9e84c7483b7584be9">getScreenHeight</a> ()=0</td></tr>
<tr class="memdesc:a81f19c6fc1273fd9e84c7483b7584be9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines the screen height in pixels.  <a href="#a81f19c6fc1273fd9e84c7483b7584be9">More...</a><br /></td></tr>
<tr class="separator:a81f19c6fc1273fd9e84c7483b7584be9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae64c2a5c59ccf4371e1f4711f4668a94"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#ae64c2a5c59ccf4371e1f4711f4668a94">getScreenWidth</a> ()=0</td></tr>
<tr class="memdesc:ae64c2a5c59ccf4371e1f4711f4668a94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines the screen width in pixels.  <a href="#ae64c2a5c59ccf4371e1f4711f4668a94">More...</a><br /></td></tr>
<tr class="separator:ae64c2a5c59ccf4371e1f4711f4668a94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56d519514bff5e53f03bb26891d8e865"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a56d519514bff5e53f03bb26891d8e865">getViewPortHeight</a> ()=0</td></tr>
<tr class="memdesc:a56d519514bff5e53f03bb26891d8e865"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines vertical size of the viewport.  <a href="#a56d519514bff5e53f03bb26891d8e865">More...</a><br /></td></tr>
<tr class="separator:a56d519514bff5e53f03bb26891d8e865"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b0ec94b2482a491c5b0409c494a4ada"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a8b0ec94b2482a491c5b0409c494a4ada">getViewPortWidth</a> ()=0</td></tr>
<tr class="memdesc:a8b0ec94b2482a491c5b0409c494a4ada"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines horizontal size of the viewport.  <a href="#a8b0ec94b2482a491c5b0409c494a4ada">More...</a><br /></td></tr>
<tr class="separator:a8b0ec94b2482a491c5b0409c494a4ada"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6772c2078dc1fa8c6a910a05692d2cda"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a6772c2078dc1fa8c6a910a05692d2cda">isDoubleBuffered</a> ()</td></tr>
<tr class="memdesc:a6772c2078dc1fa8c6a910a05692d2cda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines whether <a class="el" href="classfabgl_1_1_display_controller.html" title="Represents the base abstract class for display controllers. ">DisplayController</a> is on double buffered mode.  <a href="#a6772c2078dc1fa8c6a910a05692d2cda">More...</a><br /></td></tr>
<tr class="separator:a6772c2078dc1fa8c6a910a05692d2cda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8d3730baf09a18c31a2281a9f2ade40"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="group___enumerations.html#gacafd29e9adc4dc4055558e61fd4599c9">NativePixelFormat</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#aa8d3730baf09a18c31a2281a9f2ade40">nativePixelFormat</a> ()=0</td></tr>
<tr class="memdesc:aa8d3730baf09a18c31a2281a9f2ade40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents the native pixel format used by this display.  <a href="#aa8d3730baf09a18c31a2281a9f2ade40">More...</a><br /></td></tr>
<tr class="separator:aa8d3730baf09a18c31a2281a9f2ade40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4da2cfba4ed3d583a10f37b33e27c993"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a4da2cfba4ed3d583a10f37b33e27c993">processPrimitives</a> ()</td></tr>
<tr class="memdesc:a4da2cfba4ed3d583a10f37b33e27c993"><td class="mdescLeft">&#160;</td><td class="mdescRight">Draws immediately all primitives in the queue.  <a href="#a4da2cfba4ed3d583a10f37b33e27c993">More...</a><br /></td></tr>
<tr class="separator:a4da2cfba4ed3d583a10f37b33e27c993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3862c8630e9805dbed5d9c9bd808cead"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a3862c8630e9805dbed5d9c9bd808cead">refreshSprites</a> ()</td></tr>
<tr class="memdesc:a3862c8630e9805dbed5d9c9bd808cead"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forces the sprites to be updated.  <a href="#a3862c8630e9805dbed5d9c9bd808cead">More...</a><br /></td></tr>
<tr class="separator:a3862c8630e9805dbed5d9c9bd808cead"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ca378496df3d9ac6e9e655504a09db7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a4ca378496df3d9ac6e9e655504a09db7">removeSprites</a> ()</td></tr>
<tr class="memdesc:a4ca378496df3d9ac6e9e655504a09db7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empties the list of active sprites.  <a href="#a4ca378496df3d9ac6e9e655504a09db7">More...</a><br /></td></tr>
<tr class="separator:a4ca378496df3d9ac6e9e655504a09db7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6240950f326cda6e9813e18d59a4f276"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a6240950f326cda6e9813e18d59a4f276">resumeBackgroundPrimitiveExecution</a> ()=0</td></tr>
<tr class="memdesc:a6240950f326cda6e9813e18d59a4f276"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resumes drawings after <a class="el" href="classfabgl_1_1_display_controller.html#ac6dc2247cdcd1b1ca682740c1d867a11" title="Suspends drawings. ">suspendBackgroundPrimitiveExecution()</a>.  <a href="#a6240950f326cda6e9813e18d59a4f276">More...</a><br /></td></tr>
<tr class="separator:a6240950f326cda6e9813e18d59a4f276"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09a712cfc91abd619ffd4e44e38e7d42"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a09a712cfc91abd619ffd4e44e38e7d42">setMouseCursor</a> (<a class="el" href="structfabgl_1_1_cursor.html">Cursor</a> *cursor)</td></tr>
<tr class="memdesc:a09a712cfc91abd619ffd4e44e38e7d42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets mouse cursor and make it visible.  <a href="#a09a712cfc91abd619ffd4e44e38e7d42">More...</a><br /></td></tr>
<tr class="separator:a09a712cfc91abd619ffd4e44e38e7d42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67f02cf6af916609232b18dc7f39230e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a67f02cf6af916609232b18dc7f39230e">setMouseCursor</a> (<a class="el" href="group___enumerations.html#gae9affb623792aa869a11e81f3f10a372">CursorName</a> cursorName)</td></tr>
<tr class="memdesc:a67f02cf6af916609232b18dc7f39230e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets mouse cursor from a set of predefined cursors.  <a href="#a67f02cf6af916609232b18dc7f39230e">More...</a><br /></td></tr>
<tr class="separator:a67f02cf6af916609232b18dc7f39230e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1275e17591af40b53c50b16697bf2dd5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#a1275e17591af40b53c50b16697bf2dd5">setMouseCursorPos</a> (int <a class="el" href="fabutils_8h.html#aa6aba27bc1a89db9e350b50bbf881f57">X</a>, int <a class="el" href="fabutils_8h.html#abe4637362df8e341470401813999dd17">Y</a>)</td></tr>
<tr class="memdesc:a1275e17591af40b53c50b16697bf2dd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets mouse cursor position.  <a href="#a1275e17591af40b53c50b16697bf2dd5">More...</a><br /></td></tr>
<tr class="separator:a1275e17591af40b53c50b16697bf2dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa1b9b681e9b6f13df829ec96b1b0fb5"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:afa1b9b681e9b6f13df829ec96b1b0fb5"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#afa1b9b681e9b6f13df829ec96b1b0fb5">setSprites</a> (T *sprites, int count)</td></tr>
<tr class="memdesc:afa1b9b681e9b6f13df829ec96b1b0fb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the list of active sprites.  <a href="#afa1b9b681e9b6f13df829ec96b1b0fb5">More...</a><br /></td></tr>
<tr class="separator:afa1b9b681e9b6f13df829ec96b1b0fb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6dc2247cdcd1b1ca682740c1d867a11"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfabgl_1_1_display_controller.html#ac6dc2247cdcd1b1ca682740c1d867a11">suspendBackgroundPrimitiveExecution</a> ()=0</td></tr>
<tr class="memdesc:ac6dc2247cdcd1b1ca682740c1d867a11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Suspends drawings.  <a href="#ac6dc2247cdcd1b1ca682740c1d867a11">More...</a><br /></td></tr>
<tr class="separator:ac6dc2247cdcd1b1ca682740c1d867a11"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Represents the base abstract class for display controllers. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ad05c52072f16c0778d2e83308fb58edd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad05c52072f16c0778d2e83308fb58edd">&#9670;&nbsp;</a></span>enableBackgroundPrimitiveExecution()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::enableBackgroundPrimitiveExecution </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enables or disables drawings inside vertical retracing time. </p>
<p>Primitives are processed in background (for example in vertical retracing for VGA or in a separated task for SPI/I2C displays). This method can disable (or reenable) this behavior, making drawing instantaneous. Flickering may occur when drawings are executed out of retracing time.<br />
 When background executing is disabled the queue is emptied executing all pending primitives. Some displays (SPI/I2C) may be not updated at all when enableBackgroundPrimitiveExecution is False.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">value</td><td>When true drawings are done on background, when false drawings are executed instantly. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a0bbc7368822596ba58e4512122a0a94f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bbc7368822596ba58e4512122a0a94f">&#9670;&nbsp;</a></span>enableBackgroundPrimitiveTimeout()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::enableBackgroundPrimitiveTimeout </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Enables or disables execution time limitation inside vertical retracing interrupt. </p>
<p>Disabling interrupt execution timeout may generate flickering but speedup drawing operations.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">value</td><td>True enables timeout (default), False disables timeout </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a81f19c6fc1273fd9e84c7483b7584be9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81f19c6fc1273fd9e84c7483b7584be9">&#9670;&nbsp;</a></span>getScreenHeight()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int fabgl::DisplayController::getScreenHeight </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines the screen height in pixels. </p>
<dl class="section return"><dt>Returns</dt><dd>Screen height in pixels. </dd></dl>

<p>Implemented in <a class="el" href="classfabgl_1_1_v_g_a_controller.html#a54d7923d1beec800077e93769cf8a38b">fabgl::VGAController</a>, <a class="el" href="classfabgl_1_1_s_t7789_controller.html#ace68c596a133c7129e76c704a8df8570">fabgl::ST7789Controller</a>, and <a class="el" href="classfabgl_1_1_s_s_d1306_controller.html#a39986e2a1124e377072bbe50457c2d05">fabgl::SSD1306Controller</a>.</p>

</div>
</div>
<a id="ae64c2a5c59ccf4371e1f4711f4668a94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae64c2a5c59ccf4371e1f4711f4668a94">&#9670;&nbsp;</a></span>getScreenWidth()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int fabgl::DisplayController::getScreenWidth </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines the screen width in pixels. </p>
<dl class="section return"><dt>Returns</dt><dd>Screen width in pixels. </dd></dl>

<p>Implemented in <a class="el" href="classfabgl_1_1_v_g_a_controller.html#a1714be70aa7c740976cd3a5a6d7457c2">fabgl::VGAController</a>, <a class="el" href="classfabgl_1_1_s_t7789_controller.html#ae46ddfa7006c4ed0585837ea78deff12">fabgl::ST7789Controller</a>, and <a class="el" href="classfabgl_1_1_s_s_d1306_controller.html#afc335dc8fbdbfdd7b1a670f227d883e8">fabgl::SSD1306Controller</a>.</p>

</div>
</div>
<a id="a56d519514bff5e53f03bb26891d8e865"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56d519514bff5e53f03bb26891d8e865">&#9670;&nbsp;</a></span>getViewPortHeight()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int fabgl::DisplayController::getViewPortHeight </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines vertical size of the viewport. </p>
<dl class="section return"><dt>Returns</dt><dd>Vertical size of the viewport. </dd></dl>

<p>Implemented in <a class="el" href="classfabgl_1_1_v_g_a_controller.html#a299c2bfe3660c0a8bc6ce38525f61788">fabgl::VGAController</a>, <a class="el" href="classfabgl_1_1_s_t7789_controller.html#a37416675309b62ed2b7a3f17efba4e60">fabgl::ST7789Controller</a>, and <a class="el" href="classfabgl_1_1_s_s_d1306_controller.html#a59f04dbba57f6902d439f9dae2ff717d">fabgl::SSD1306Controller</a>.</p>

</div>
</div>
<a id="a8b0ec94b2482a491c5b0409c494a4ada"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b0ec94b2482a491c5b0409c494a4ada">&#9670;&nbsp;</a></span>getViewPortWidth()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int fabgl::DisplayController::getViewPortWidth </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines horizontal size of the viewport. </p>
<dl class="section return"><dt>Returns</dt><dd>Horizontal size of the viewport. </dd></dl>

<p>Implemented in <a class="el" href="classfabgl_1_1_v_g_a_controller.html#a62aed395da993973e820ffa87d2ce6ce">fabgl::VGAController</a>, <a class="el" href="classfabgl_1_1_s_t7789_controller.html#a8898066d3c8344c336c523c932a940e4">fabgl::ST7789Controller</a>, and <a class="el" href="classfabgl_1_1_s_s_d1306_controller.html#a882c78620db9d2f95ed55e9a5cc9e808">fabgl::SSD1306Controller</a>.</p>

</div>
</div>
<a id="a6772c2078dc1fa8c6a910a05692d2cda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6772c2078dc1fa8c6a910a05692d2cda">&#9670;&nbsp;</a></span>isDoubleBuffered()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool fabgl::DisplayController::isDoubleBuffered </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Determines whether <a class="el" href="classfabgl_1_1_display_controller.html" title="Represents the base abstract class for display controllers. ">DisplayController</a> is on double buffered mode. </p>
<dl class="section return"><dt>Returns</dt><dd>True if <a class="el" href="classfabgl_1_1_display_controller.html" title="Represents the base abstract class for display controllers. ">DisplayController</a> is on double buffered mode. </dd></dl>

</div>
</div>
<a id="aa8d3730baf09a18c31a2281a9f2ade40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8d3730baf09a18c31a2281a9f2ade40">&#9670;&nbsp;</a></span>nativePixelFormat()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="group___enumerations.html#gacafd29e9adc4dc4055558e61fd4599c9">NativePixelFormat</a> fabgl::DisplayController::nativePixelFormat </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Represents the native pixel format used by this display. </p>
<dl class="section return"><dt>Returns</dt><dd>Display native pixel format </dd></dl>

<p>Implemented in <a class="el" href="classfabgl_1_1_v_g_a_controller.html#ab261f12432eea2de7530e3787412586d">fabgl::VGAController</a>, <a class="el" href="classfabgl_1_1_s_t7789_controller.html#ac131174a70010ee80caf11844fdd822c">fabgl::ST7789Controller</a>, and <a class="el" href="classfabgl_1_1_s_s_d1306_controller.html#a05949b527b09f06210c5ae07460c2503">fabgl::SSD1306Controller</a>.</p>

</div>
</div>
<a id="a4da2cfba4ed3d583a10f37b33e27c993"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4da2cfba4ed3d583a10f37b33e27c993">&#9670;&nbsp;</a></span>processPrimitives()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void IRAM_ATTR fabgl::DisplayController::processPrimitives </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Draws immediately all primitives in the queue. </p>
<p>Draws all primitives before they are processed in the vertical sync interrupt.<br />
 May generate flickering because don't care of vertical sync. </p>

</div>
</div>
<a id="a3862c8630e9805dbed5d9c9bd808cead"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3862c8630e9805dbed5d9c9bd808cead">&#9670;&nbsp;</a></span>refreshSprites()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::refreshSprites </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Forces the sprites to be updated. </p>
<p>Screen is automatically updated whenever a primitive is painted (look at <a class="el" href="classfabgl_1_1_canvas.html" title="A class with a set of drawing methods. ">Canvas</a>).<br />
 When a sprite updates its image or its position (or any other property) it is required to force a refresh using this method.<br />
 <a class="el" href="classfabgl_1_1_display_controller.html#a3862c8630e9805dbed5d9c9bd808cead" title="Forces the sprites to be updated. ">DisplayController.refreshSprites()</a> is required also when using the double buffered mode, to paint sprites. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_s_s_d1306__o_l_e_d_2128x32_2_collision_detection_2_collision_detection_8ino-example.html#a5">SSD1306_OLED/128x32/CollisionDetection/CollisionDetection.ino</a>, <a class="el" href="_s_s_d1306__o_l_e_d_2128x64_2_collision_detection_2_collision_detection_8ino-example.html#a5">SSD1306_OLED/128x64/CollisionDetection/CollisionDetection.ino</a>, <a class="el" href="_s_t7789__t_f_t_2240x240_2_sprites_2_sprites_8ino-example.html#a6">ST7789_TFT/240x240/Sprites/Sprites.ino</a>, <a class="el" href="_v_g_a_2_collision_detection_2_collision_detection_8ino-example.html#a4">VGA/CollisionDetection/CollisionDetection.ino</a>, <a class="el" href="_v_g_a_2_space_invaders_2_space_invaders_8ino-example.html#a18">VGA/SpaceInvaders/SpaceInvaders.ino</a>, and <a class="el" href="_v_g_a_2_sprites_2_sprites_8ino-example.html#a6">VGA/Sprites/Sprites.ino</a>.</dd>
</dl>
</div>
</div>
<a id="a4ca378496df3d9ac6e9e655504a09db7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ca378496df3d9ac6e9e655504a09db7">&#9670;&nbsp;</a></span>removeSprites()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::removeSprites </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Empties the list of active sprites. </p>
<p>Call this method when you don't need active sprites anymore. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_v_g_a_2_space_invaders_2_space_invaders_8ino-example.html#a17">VGA/SpaceInvaders/SpaceInvaders.ino</a>.</dd>
</dl>
</div>
</div>
<a id="a6240950f326cda6e9813e18d59a4f276"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6240950f326cda6e9813e18d59a4f276">&#9670;&nbsp;</a></span>resumeBackgroundPrimitiveExecution()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void fabgl::DisplayController::resumeBackgroundPrimitiveExecution </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Resumes drawings after <a class="el" href="classfabgl_1_1_display_controller.html#ac6dc2247cdcd1b1ca682740c1d867a11" title="Suspends drawings. ">suspendBackgroundPrimitiveExecution()</a>. </p>
<p>Resumes drawings enabling vertical sync interrupt. </p>

<p>Implemented in <a class="el" href="classfabgl_1_1_v_g_a_controller.html#aaa2d1522cce88d3ca2717db380f2e692">fabgl::VGAController</a>, <a class="el" href="classfabgl_1_1_s_t7789_controller.html#a098b59863c47b44466a290cab12a07fd">fabgl::ST7789Controller</a>, and <a class="el" href="classfabgl_1_1_s_s_d1306_controller.html#ad7d0fe367a5a580ffaaca45bf6c6e9cc">fabgl::SSD1306Controller</a>.</p>

</div>
</div>
<a id="a09a712cfc91abd619ffd4e44e38e7d42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09a712cfc91abd619ffd4e44e38e7d42">&#9670;&nbsp;</a></span>setMouseCursor() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::setMouseCursor </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structfabgl_1_1_cursor.html">Cursor</a> *&#160;</td>
          <td class="paramname"><em>cursor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets mouse cursor and make it visible. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cursor</td><td><a class="el" href="structfabgl_1_1_cursor.html" title="Defines a cursor. ">Cursor</a> to use when mouse pointer need to be painted. nullptr = disable mouse pointer. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_v_g_a_2_mouse_on_screen_2_mouse_on_screen_8ino-example.html#a11">VGA/MouseOnScreen/MouseOnScreen.ino</a>.</dd>
</dl>
</div>
</div>
<a id="a67f02cf6af916609232b18dc7f39230e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67f02cf6af916609232b18dc7f39230e">&#9670;&nbsp;</a></span>setMouseCursor() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::setMouseCursor </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___enumerations.html#gae9affb623792aa869a11e81f3f10a372">CursorName</a>&#160;</td>
          <td class="paramname"><em>cursorName</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets mouse cursor from a set of predefined cursors. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cursorName</td><td>Name (enum) of predefined cursor.</td></tr>
  </table>
  </dd>
</dl>
<p>Example: </p><pre class="fragment">VGAController.setMouseCursor(CursorName::CursorPointerShadowed);</pre> 
</div>
</div>
<a id="a1275e17591af40b53c50b16697bf2dd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1275e17591af40b53c50b16697bf2dd5">&#9670;&nbsp;</a></span>setMouseCursorPos()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::setMouseCursorPos </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>X</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>Y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets mouse cursor position. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">X</td><td><a class="el" href="classfabgl_1_1_mouse.html" title="The PS2 Mouse controller class. ">Mouse</a> cursor horizontal position. </td></tr>
    <tr><td class="paramname">Y</td><td><a class="el" href="classfabgl_1_1_mouse.html" title="The PS2 Mouse controller class. ">Mouse</a> cursor vertical position. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="afa1b9b681e9b6f13df829ec96b1b0fb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa1b9b681e9b6f13df829ec96b1b0fb5">&#9670;&nbsp;</a></span>setSprites()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void fabgl::DisplayController::setSprites </td>
          <td>(</td>
          <td class="paramtype">T *&#160;</td>
          <td class="paramname"><em>sprites</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the list of active sprites. </p>
<p>A sprite is an image that keeps background unchanged.<br />
 There is no limit to the number of active sprites, but flickering and slow refresh happens when a lot of sprites (or large sprites) are visible.<br />
 To empty the list of active sprites call <a class="el" href="classfabgl_1_1_display_controller.html#a4ca378496df3d9ac6e9e655504a09db7" title="Empties the list of active sprites. ">DisplayController.removeSprites()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">sprites</td><td>The list of sprites to make currently active. </td></tr>
    <tr><td class="paramname">count</td><td>Number of sprites in the list.</td></tr>
  </table>
  </dd>
</dl>
<p>Example: </p><pre class="fragment">// define a sprite with user data (velX and velY)
struct MySprite : Sprite {
  int  velX;
  int  velY;
};

static MySprite sprites[10];

VGAController.setSprites(sprites, 10);</pre> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="_s_s_d1306__o_l_e_d_2128x32_2_collision_detection_2_collision_detection_8ino-example.html#a2">SSD1306_OLED/128x32/CollisionDetection/CollisionDetection.ino</a>, <a class="el" href="_s_s_d1306__o_l_e_d_2128x64_2_collision_detection_2_collision_detection_8ino-example.html#a2">SSD1306_OLED/128x64/CollisionDetection/CollisionDetection.ino</a>, <a class="el" href="_s_t7789__t_f_t_2240x240_2_sprites_2_sprites_8ino-example.html#a4">ST7789_TFT/240x240/Sprites/Sprites.ino</a>, <a class="el" href="_v_g_a_2_collision_detection_2_collision_detection_8ino-example.html#a1">VGA/CollisionDetection/CollisionDetection.ino</a>, <a class="el" href="_v_g_a_2_space_invaders_2_space_invaders_8ino-example.html#a13">VGA/SpaceInvaders/SpaceInvaders.ino</a>, and <a class="el" href="_v_g_a_2_sprites_2_sprites_8ino-example.html#a4">VGA/Sprites/Sprites.ino</a>.</dd>
</dl>
</div>
</div>
<a id="ac6dc2247cdcd1b1ca682740c1d867a11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6dc2247cdcd1b1ca682740c1d867a11">&#9670;&nbsp;</a></span>suspendBackgroundPrimitiveExecution()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void fabgl::DisplayController::suspendBackgroundPrimitiveExecution </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Suspends drawings. </p>
<p>Suspends drawings disabling vertical sync interrupt.<br />
 After call to <a class="el" href="classfabgl_1_1_display_controller.html#ac6dc2247cdcd1b1ca682740c1d867a11" title="Suspends drawings. ">suspendBackgroundPrimitiveExecution()</a> adding new primitives may cause a deadlock.<br />
 To avoid it a call to "processPrimitives()" should be performed very often.<br />
 This method maintains a counter so can be nested. </p>

<p>Implemented in <a class="el" href="classfabgl_1_1_v_g_a_controller.html#ac1080e32a32fc6b8339575223c5e6574">fabgl::VGAController</a>, <a class="el" href="classfabgl_1_1_s_t7789_controller.html#ae9fe36cfadae1c50e2198d484dc1d6dd">fabgl::ST7789Controller</a>, and <a class="el" href="classfabgl_1_1_s_s_d1306_controller.html#afe89235eebb683c0ea80a954040a97e8">fabgl::SSD1306Controller</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="displaycontroller_8h_source.html">displaycontroller.h</a></li>
<li>displaycontroller.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>fabgl</b></li><li class="navelem"><a class="el" href="classfabgl_1_1_display_controller.html">DisplayController</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  </ul>
</div>
</body>
</html>
